package com.biz.primus.model.order.vo;

import com.biz.primus.model.order.enums.InvoiceType;
import com.biz.primus.model.oms.enums.OrderDeliveryType;
import com.biz.primus.model.order.enums.PaymentState;
import com.biz.primus.model.order.enums.OrderPaymentWay;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.Column;
import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.List;

/**
 * 订单汇总视图 <br>
 *     1、没有表实体，仅接受购物车传送过来的商品列表，最多两个列表：门店列表和范围列表；
 *     2、根据 门店-商品 查询计算商品价格；
 *     3、计算 商品门店优惠、促销、优惠券；
 *     4、根据用户选择的物流方式计算运费；
 *
 * @author Tiger Feng
 * @date 2017年10月28日
 */
@Data
@NoArgsConstructor
@ApiModel("订单汇总视图")
public class OrderSummaryVO implements Serializable {
    private static final long serialVersionUID = -7536244013246510175L;

    //--门店信息-------------------
    /**
     * 门店编码(门店或省仓店)
     */
    @ApiModelProperty("门店编码(门店或省仓店)")
    private String depotCode;

    //--订单信息-------------------
    /**
     * 门店订单
     */
    @ApiModelProperty("门店订单")
    private OrderVO storeOrder;
    /**
     * 总店订单、旗舰店订单
     */
    @ApiModelProperty("总店订单、旗舰店订单")
    private OrderVO flagshipOrder;
    /**
     * 应付款总金额
     */
    @ApiModelProperty("应付款总金额")
    private Integer payableAmount = 0;
    /**
     * 商品总数量
     */
    @ApiModelProperty("商品总数量")
    private Integer quantity = 0;

    //--备注----------------------
    /**
     * 用户备注
     */
    @ApiModelProperty("用户备注")
    private String userRemark;
    /**
     *  商户自备注(一般用于客服)
     */
    @ApiModelProperty("商户自备注(一般用于客服)")
    private String selfRemark;


    //-- 配送相关----------------
    /**
     * 用户ID
     */
    @ApiModelProperty("用户ID")
    private Long userId;
    /**
     * 定位纬度
     */
    @Column(scale = 6)
    @ApiModelProperty("定位纬度")
    private BigDecimal Lat;
    /**
     * 定位经度
     */
    @ApiModelProperty("定位经度")
    private BigDecimal Lon;
    /**
     * 订单IP，用户下单的IP地址
     */
    @ApiModelProperty("订单IP，用户下单的IP地址")
    private String orderIp;
    /**
     * 收货信息
     */
    @ApiModelProperty("收货信息")
    private OrderConsigneeInfoVO consignee;
//    /**
//     * 配送方式
//     */
//    @ApiModelProperty("配送方式")
//    private OrderDeliveryType deliveryType;

    /**
     * 物流费-总共
     */
    @ApiModelProperty("物流费-总共")
    private Integer deliveryMoney;

    //--支付相关-----------------
    /**
     * 当前订单汇总可支持的支付方式列表
     */
    @ApiModelProperty("当前订单汇总可支持的支付方式列表")
    private List<OrderPaymentWay> supportPaymentWays;
    /**
     * 支付方式
     */
    @ApiModelProperty("支付方式")
    private OrderPaymentWay paymentWay;
    /**
     * 未支付订单过期时间
     */
    @ApiModelProperty("未支付订单过期时间")
    private Timestamp expireAt;
    /**
     * 支付状态
     */
    @ApiModelProperty("支付状态")
    private PaymentState paymentState;
    /**
     * 未支付订单保留时间(分)
     */
    @ApiModelProperty("未支付订单保留时间(分)")
    private Integer expireMinutes = 15;

    //--发票相关----------------
    /**
     * 发票类型（none：不开发票、personal：个人、company：公司）
     */
    @ApiModelProperty("发票类型（none：不开发票、personal：个人、company：公司）")
    private InvoiceType invoiceType = InvoiceType.none;
    /**
     * 发票抬头（发票类型为公司时有值空）
     */
    @ApiModelProperty("发票抬头")
    private String invoiceTitle;
}
